var gulp = require('gulp');
var less = require('gulp-less');
var sass = require('gulp-sass');
var minifycss = require('gulp-clean-css');//css文件压缩
var concat = require('gulp-concat');//js合并
var uglify = require('gulp-uglify');//js压缩
var rename = require('gulp-rename');//重命名  给js压缩文件添加.min前缀
var jshint = require('gulp-jshint');//js语法检查
//定义一个testLess任务（自定义任务名称）
gulp.task('testLess', function () {
    gulp.src('less/*.less')       //该任务针对的文件
        .pipe(less())             //该任务调用的模块
        .pipe(gulp.dest('css'));  //将会在css下生成index.css
});
//定义一个testScss任务（自定义任务名称）
gulp.task('testSass', function () {
    gulp.src('sass/*.scss')      //该任务针对的文件
        .pipe(sass())         //该任务调用的模块
        .pipe(gulp.dest('css'));  //将会在css下生成index.css
});

//语法检查
gulp.task('jshint', function () {
    return gulp.src('js/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});
//压缩css
gulp.task('minifycss', function () {
    return gulp.src('css/*.css')    //需要操作的文件
        .pipe(rename({suffix: '.min'}))   //rename压缩后的文件名
        .pipe(minifycss())   //执行压缩css
        .pipe(gulp.dest('allcss'));   //输出文件夹
});
//压缩,合并js
gulp.task('minifyjs', function () {
    return gulp.src('js/*.js')          //需要操作的文件
        .pipe(concat('all.js'))         //合并所有js到all.js
        .pipe(gulp.dest('alljs'))       //输出到文件夹alljs下
        .pipe(rename({suffix: '.min'})) //rename压缩后的文件名
        .pipe(uglify())    //压缩
        .pipe(gulp.dest('alljs'));  //输出
});

gulp.task('gulpWatch', function () {
    gulp.watch('js/*.js', ['minifyjs']);
    gulp.watch('less/*.less', ['testLess', 'minifycss']);
});
//同时让默认程序执行一次，可以提高开始执行速度。
gulp.task('default', ['jshint', 'testLess', 'testSass', 'minifycss', 'minifyjs', 'gulpWatch']);